package com.woniuxy.controller;

import com.woniuxy.service.IContentInteractionPredictionService;
import com.woniuxy.util.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author 陈华庆
 * @Date 2025/7/23 1:12
 * @Description TODO
 * 内容互动预测控制器
 * 提供内容互动率预测的API接口
 */
/*
- 1.
数据来源 ：使用 all_article 表的 view_count 、 create_time 和 topic_id 字段，结合 article_comment 表的评论数据
- 2.
预测算法 ：采用时间序列平滑法，基于过去90天相同话题文章的历史数据，计算日均增长率和标准差，预测未来7天的浏览量和评论量
- 3.
置信区间 ：通过历史数据的标准差计算95%置信区间，提供预测结果的可靠性评估
- 4.
工程化考虑 ：

- 兼容现有项目架构，使用统一的ResponseData响应格式
- 异常处理：当没有足够历史数据时返回友好提示
- 样本量记录：在预测结果中包含样本量信息，帮助评估预测可信度
 */
@RestController
@RequestMapping("/content/prediction")
public class ContentPredictionController {

    @Autowired
    private IContentInteractionPredictionService contentInteractionPredictionService;

    /**
     * 获取新内容7天内的互动预测
     * @param topicId 话题ID
     * @return 预测结果
     */
    @GetMapping("/7day-interaction")
    public ResponseData get7DayInteractionPrediction(@RequestParam("topicId") Integer topicId) {
        return contentInteractionPredictionService.predict7DayInteraction(topicId);
    }
}
